package org.activequant.data.retrieval;
import org.activequant.core.domainmodel.marketscanner.MarketScanSeriesSpecification;
import org.activequant.core.domainmodel.marketscanner.ScanDataTimeSeries;

/**
 * Generic data retrieval interfaces for ScanDataTimeSeries specializations.<br>
 * IScanDataSeriesDataSource&lt;T extends ScanDataTimeSeries&lt;?&gt;&gt; is an interface. Defines the method:
 * <ul>
 * <li>T fetch(MarketScanSeriesSpecification marketScanSeriesSpecification) throws Exception;</li>
 * </ul>
 *  @author Dimitar Misev
 *
 */
public interface IScanDataSeriesDataSource<T extends ScanDataTimeSeries<?>> {

	/**
	 * returns a ScanData series according to the marketScanSeriesSpecification
	 * @param marketScanSeriesSpecification
	 * @return
	 * @throws Exception
	 */
	T fetch(MarketScanSeriesSpecification marketScanSeriesSpecification) throws Exception;
}
